Because a speed of a central processing unit (CPU) is much higher than a memory read speed, data needs to be prefetched and put in a place that can be accessed by a processor more quickly, such as a cache or an additional buffer (for example, a scratchpad memory).
By using a compiler, a compiler-controlled software prefetcher inserts a prefetch instruction, where the prefetch instruction can be used for requesting data before a processor uses the data, so as to improve a data access speed of the processor. However, a great number of prefetch instructions are inserted, which may cause that the number of instructions that need to be run is increased, thereby resulting in an extra instruction overhead.